package cn.tannn.cat.file.sdk;


import cn.tannn.cat.file.sdk.api.UploadFile;
import cn.tannn.cat.file.sdk.bean.FileIndex;
import cn.tannn.cat.file.sdk.bean.FileStorage;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

/**
 * 文件接口类
 *
 * @author tn
 * @version 1
 * @date 2022-04-01 13:44
 */
public interface OssOperateAPI {

    /**
     * 上传文件
     *
     * @param upload 文件
     * @param storage 存储器
     * @return 文件索引
     * @throws IOException exception
     */
    FileIndex uploadFile(UploadFile upload, FileStorage storage) throws IOException;

    /**
     * 删除文件 - oss中的文件/storage中的记录
     *
     * @param index 文件索引
     * @return boolean
     */
    boolean removeFile(FileIndex index);




    /**
     * 文件下载
     *
     * @param response      response
     * @param index 文件索引
     */
    void downloadFile(HttpServletResponse response, FileIndex index);



    /**
     * 文件预览
     *
     * @param index 文件索引
     * @param expires 过期时间/s[默认是7天]
     * @return 有效期地址
     */
    default String previewFile(FileIndex index, Integer expires){
        throw new UnsupportedOperationException("预览文件功能未实现");
    }

}
